Migo商城2.0 业务逻辑中添加redis 缓存(1) 十九
分单机版和集群版,之前附件有说单机版了这里说下另外一种集群:
集群的搭建(伪分布式)
集群中至少有三个节点(选举模式),每个节点有一备份节点。需要6台服务器。
需要6个redis
实例。需要每个实例运行在不同的端口号。
搭建步骤:
第一步:创建6个redis
实例
第二步:修改redis
的配置文件,修改端口号,开启集群。
第三步:启动每个redis
实例。
第四步:创建集群,需要使用ruby
脚本。需要安装ruby
环境。
安装ruby
1 | yum install ruby |
安装ruby
和redis
的接口程序:
拷贝redis-3.0.0.gem
至/usr/local
下
执行:
1 | gem install /usr/local/redis-3.0.0.gem |
使用redis-trib.rb
脚本创建集群。
第五步:执行创建集群命令:
1 | [root@localhost redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.25.153:7001 192.168.25.153:7002 192.168.25.153:7003 192.168.25.153:7004 192.168.25.153:7005 192.168.25.153:7006 |
1 | [root@localhost redis-cluster]# redis01/redis-cli -p 7004 -c |
项目中导入jedis
的依赖,因为各个系统都有可能加缓存,所以,代码实现放在common
工程中,注意事项看代码中的解释
这里就涉及到了什么时候定义接口和实现,同一个接口可以有不一样的实现,这里是分为单机版和集群版两种实现,这就是所谓的面向接口
先定义一个接口
1 | package com.migo.service; |
单机版redis
实现:
1 | package com.migo.service.impl; |
集群版redis
实现:
1 | package com.migo.service.impl; |
抽取模板方法
单机版那里可以看到方法里有比较多的重复代码,这里就讲一下Spring对模板代码的抽取方法:
拿大家最熟悉的jdbctemplate
为例:
第一步 任务逻辑接口(自己需要实现的逻辑):
WorkCallback
参考上图中的1
,因参数未知类型,所以设置为E
1 | package com.migo.service; |
第二步 实现类中定义execute
方法
返回类型依然是T
参考上图中2
和3
,参数就是第一步代码中定义的接口实现类
1 | private <T> T excute(WorkCallback<T,Jedis> workCallback){ |
第三步,调用类中调用excute方法并实现相应接口任务逻辑
因为要传入的是类型,所以返回的long
修改为装箱类Long
1 | package com.migo.service.impl; |
改造完毕,其实模板类方法的设计也不过如此
Spring
和jedis
的整合
migo-manage
web
项目中的service
配置文件:
1 | <beans xmlns="http://www.springframework.org/schema/beans" |